/*
 * @Author: 前端一理 1041123705@qq.com
 * @Date: 2024-03-20 14:36:17
 * @LastEditors: 前端一理 1041123705@qq.com
 * @LastEditTime: 2024-03-20 14:46:32
 * @FilePath: \page-image-crawling\logo.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
/**
 * 1. 使用axios获取页面内容
 * 2. 使用cheerio解析页面内容
 * 3. 使用fs模块保存图片到本地
 * 4. 使用axios的responseType: 'stream'选项，将图片流保存到本地
 * 5. 使用pipe方法将图片流保存到本地
 * 6. 使用forEach循环遍历每个图片链接并保存到本地
 */

const axios = require('axios');
const cheerio = require('cheerio');
const fs = require('fs');

const url = 'http://www.chinapbq.com/';


// 目标网站出现了反爬虫，配置请求头伪装成PC浏览器请求 当然也可以模拟其他设备
axios.defaults.headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
};

axios.get(url)
  .then(response => {
    const $ = cheerio.load(response.data);
    const imgUrls = [];

    // 使用选择器获取所有包含图片链接的img标签
    $('div.e_html-1 img').each((index, element) => {
      const imgUrl = $(element).attr('src');
      imgUrls.push(imgUrl);
    });
    console.log(imgUrls);
    // 循环遍历每个图片链接并保存到本地
    imgUrls.forEach((imgUrl, index) => {
      axios({
        method: 'get',
        url: imgUrl,
        responseType: 'stream'
      }).then(response => {
        response.data.pipe(fs.createWriteStream(`./logo/bg-${index}.png`));
      }).catch(error => {
        console.log(error);
      });
    });
  }).catch(error => {
    console.log(error);
  });
